1. Quick Start

Python是一门非常优秀的编程语言,由于其语法简介、易学易用,越来越受到编程人员的喜爱。相对于Python在数据分析、人工智能等领域中的发展,在数据可视化方面的发展相对有些滞后。最经典的Python可视化绘图库莫过于Matplotlib,就是MATLAB+Plot+Library,即绘图风格模仿MATLAB的绘图库。但由于其风格有些偏古典,Python开源社区开发了Seaborn绘图模块,本质上是对Matplotlib的封装,绘图效果更符合现代人的审美观。尽管如此仍然存在一个很大的缺陷:是一个静态的绘图模块,绘制出的图像是静态的,就像打开一张图片一样,没有交互式效果。因此Plotly应运而生,是一个基于JavaScript的动态绘图模块,绘制出来的图像与我们在网页上看到的动态交互式绘图效果是一样的。默认的绘图结果是一个HTML网页文件,通过浏览器就可以查看,并且易于分享,是GitHub开源网站目前最火的绘图工具,但在国内的知名度却不是很高。

1.1 Plotly简介

Plotly项目的创始人是Alex Johnson,是哈佛大学物理博士。该项目的参与者中有一位华裔女性,叫Baobao Zhang,是耶鲁大学政治学博士。Plotly项目团队在2013年就已经拿到数百万美元的投资,在加拿大注册了公司,名字是科学数据云服务公司。Plotly公司有很多大牌客户,比如西门子、Google、美国国家航天局NASA、美国空军、华盛顿邮报等等。

Plotly底层使用的是plotly.js(所有的图形、数据和互动都是通过JavaScript函数完成的),支持Python、R、MATLAB、JavaScript这四种语言的扩展。Plotly原本是收费软件,于2016年提供了绘图模块库的免费社区版本,并增加了Python等多种编程语言的接口,以及离线模式支持。Python绘图模块库内置的图形类型非常丰富,可以通过访问官网https://plot.ly/python/ 查看。

1.2 安装与配置

(1)下载Anaconda

Anaconda是一个专门用于统计和机器学习的IDE工具(Integrated Development Environment,集成开发环境),它集成了Python和许多基础的库,并且可以很好管理安装环境和各种工具包,省去许多复杂的配置过程。(不需要提前安装Python,找到Anaconda安装目录中Scripts文件夹,复制路径添加至环境变量Path中即可配置Python环境)

(2)安装plotly

运行Anaconda Promote(annaconda开发环境下的命令提示符)

  1. 查看conda版本:conda --version
  2. 查看python版本:python --version
  3. 查看当前安装的package:conda list
  4. 使用pip命令安装plotly:pip install plotlypip install plotly==4.12pip install plotly --upgrade(更新)

image.png

(3)启动Jupyter Notebook

  1. 点击“开始”-“Anaconda3”-“Jupyter Notebook”,建议使用Google Chrome浏览器,默认地址:http://localhost:8888
  2. 在打开的工作空间页面中,点击右上角“New”-“Python3”来创建一个Notebook文件(后缀名为.ipynb),点击“Upload”可以上传一个.ipynb文件
  3. 在新建的Notebook页面中,可以通过Help中的User Interface Tour了解界面,熟悉编辑模式和命令模式
  4. 如何更改工作空间?Windows用户:右击“Jupyter Notebook”属性,把“目标”中 %USERPROFILE% 替换成新的文件目录;Mac OS用户:在Terminal窗口中输入 cd /new_folder_name,然后输入jupyter notebook启动

1.3 Plotly VS. Matplotlib

1.4 基本绘图流程

Plotly绘图模块一般称一个基本绘图对象为trace(画轨、画迹、画痕),每个trace都可以由Plotly模块库里面的graph_objects子模块的各类对象(Scatter、Bar、Line、Pie等)来定义。从上一例题可以总结出Plotly的基本绘图流程:

  1. 导入绘图模块库Plotly的子模块graph_objects:import plotly.graph_objects as go
  2. 使用go.Figure()函数创建一个图形fig:若该图像有多个trace,建议暂不传递参数,进行下一步;也可以直接向data参数传递绘图对象(建议一个trace时使用,多个trace需以列表形式传递);
  3. 使用add_trace()函数向fig中添加trace;
  4. 使用update_layout()函数设置fig的画面布局(比如标题、X\Y轴标题等);
  5. 将图形fig输出:fig.show()